[マネジメントコンソール編] CloudWatchアラームを設定したいが、しきい値として設定したいCloudWatchメトリクスが存在しない場合の対処方法
困っていた内容
マネジメントコンソールから、とあるメトリクスの CloudWatch アラームを作成したいと考えております。
しかし、対象のメトリクスは現在コンソール上で確認できないため、CloudWatch アラームの作成ができません。もし対応方法があれば教えてください。
どう対応すればいいの?
メトリクスによっては、常に記録されずにレポート条件を満たした場合にのみ記録されるメトリクスがあります。また、過去 2 週間に新しいデータポイントがないメトリクスは、コンソールに表示されません。
その場合は以下の方法で CloudWatch アラームを作成することをお試しください。
対応方法
- CloudWatch コンソールからアラーム作成画面に移動する
- アラームを作成したいサービスの他のメトリクスを一度アラームの監視対象としてチェックする
- [発信元] タブでメトリクス名を監視したいメトリクス名に変更する
なお、AWS CLI を使用して対応することも可能です。
やってみた
AWS WAF の BlockedRequests メトリクスが検知された際に通知を行う CloudWatch アラームを作成します。
前提
以下のブログ記事をもとに WAF (Web ACL とルール)を作成して ALB と紐付けを行ないました。
CloudWatch コンソールから CloudWatch アラームページに移動し、「アラームの作成」をクリックします。
そして「メトリクスの選択」をクリックします。
WAFV2 > Region,Rule,WebACL を選択していきますが、BlockedRequests メトリクスは記録がまだ行われておらず、AllowedRequests メトリクスのみ確認できる状態です。
CloudWatch アラームを作成する
一度 AllowedRequests メトリクスにチェックを入れた状態で「発信元」タブをクリックします。
以下のように AllowedRequests メトリクスについての詳細が JSON 形式で表示がされます。
AllowedRequests を BlockedRequests に書き換え、「更新」をクリックします。
そして「メトリクスの選択」をクリックします。すると、通常通り CloudWatch アラームの作成が行えます。
CloudWatch アラームの作成後に ApacheBench を使用して大量アクセスを生成し BlockedRequests メトリクスを記録させたところ、問題なく SNS を通じて アラーム通知が送られました!
参考情報
CloudWatch Logs のメトリクスフィルターを使用する際に、存在しないメトリクスをもとにアラームを設定したい場合はこちらのブログ記事の内容が参考になります。